home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-11 / vs_804.zip / VS_DEMO.EXE / VERNDEMO.PRG < prev    next >
Text File  |  1992-01-02  |  64KB  |  1,862 lines

  1. * Filename......: VernDemo.Prg
  2. *
  3. * Author........: Vernon E. Six, Jr.
  4. *                 2908 Forest Hollow Lane #2329
  5. *                 Arlington, Texas  76006
  6. *                 Ph: (214) 283-3282 - Voice
  7. *                 Ph: (817) 695-0058 - BBS
  8. *
  9. * Last Update...: Thu  11-14-1991  11:30:18
  10. *
  11. * Notice........: Copyright (c) 1989-90 by Vernon E. Six, Jr.
  12. *                 All Rights Reserved World Wide
  13. *
  14. * Version.......: Clipper v5.0x
  15.  
  16. #include "INKEY.CH"
  17. #include "SETCURS.CH"
  18.  
  19. FUNCTION VernDemo
  20. *****
  21. * Demonstation program for VERNSIX5.LIB
  22. *****
  23. LOCAL ac_Msg[15]         // Used Just About EveryWhere In Here
  24. LOCAL a_Menu     := {}   // Used with VS_Menu()
  25. LOCAL a_Options  := {}   // Used with VS_Menu()
  26. LOCAL ac_Title   := {}   // Used with VS_Menu()
  27.  
  28.  
  29.    *══ Some basic sets ═══════════════════════════════════════*
  30.  
  31.    SET(_SET_EXCLUSIVE,.F.)  // Allow Multiple Users
  32.    SET(_SET_SCOREBOARD,.F.) // Don't show that Fugly line!!!!!!
  33.  
  34.  
  35.    *══ Let's get the show on the road ════════════════════════*
  36.    
  37.    VS_InitVern()    // Initialize my library
  38.    VS_NewScrn()     // Start with a fresh screen
  39.    VS_InitHelp()    // Open the context sensitive help files
  40.    
  41.  
  42.    *══ Setup all the hot-keys ════════════════════════════════*
  43.  
  44.    SetKey(K_F1,    {| p,l,v | VS_Help(p,l,v)    } ) // Context Sensitive Help
  45.    SetKey(K_ALT_H, {| p,l,v | VS_MakeHlp(p,l,v) } ) // Create Help
  46.    SetKey(K_ALT_L, {|       | VS_FakeLck()      } ) // Simulate Network Locks
  47.  
  48.  
  49.    *══ Some General Info Screens ═════════════════════════════*
  50.  
  51.    VS_GrabScr()
  52.       ac_Msg[1]  = PADC("Vern Six's Clipper ToolBox v8.04     Thu  01-02-1992",60)
  53.       ac_Msg[2]  = PADC("",60)
  54.       ac_Msg[3]  = PADC("Copyright (c) 1991  by Vernon E. Six, Jr.",60)
  55.       ac_Msg[4]  = PADC("All Rights Reserved World Wide",60)
  56.       ac_Msg[5]  = PADC("",60)
  57.       ac_Msg[6]  = PADC("Vernon E. Six, Jr.",60)
  58.       ac_Msg[7]  = PADC("2908 Forest Hollow Lane #2329",60)
  59.       ac_Msg[8]  = PADC("Arlington, Texas  76006",60)
  60.       ac_Msg[9]  = PADC("Ph: (214) 283-3282 - VOICE",60)
  61.       ac_Msg[10] = PADC("Ph: (817) 695-0058 - BBS",60)
  62.       VS_Msg(ac_Msg,10,"","")
  63.       VS_Inkey(5)
  64.    VS_PutScr()
  65.          
  66.    VS_GrabScr()
  67.       ac_Msg[1]  = PADC("Welcome to the Vern Six Clipper Toolbox!!     ",60)
  68.       ac_Msg[2]  = PADC("                                              ",60)
  69.       ac_Msg[3]  = PADC("What you are about to see is a demonstration  ",60)
  70.       ac_Msg[4]  = PADC("of some of the capabilities made possible via ",60)
  71.       ac_Msg[5]  = PADC("this library.                                 ",60)
  72.       ac_Msg[6]  = PADC("                                              ",60)
  73.       ac_Msg[7]  = PADC("For the most part, you will probably not be   ",60)
  74.       ac_Msg[8]  = PADC("able to see much from just using this demo.   ",60)
  75.       ac_Msg[9]  = PADC("You should look at and STUDY the source code  ",60)
  76.       ac_Msg[10] = PADC("to really get a feel for what is taking place ",60)
  77.       ac_Msg[11] = PADC("in this demo and how to access VERNSIX5.LIB.  ",60)
  78.       VS_Msg(ac_Msg,11," Vern Six's Clipper Toolbox v8.04 "," Press any key to continue ")
  79.       VS_Inkey(0)
  80.    VS_PutScr()
  81.  
  82.    VS_GrabScr()
  83.       ac_Msg[1]  = PADC("VERNSIX5.LIB comes complete with one-hundred thirty- ",60)
  84.       ac_Msg[2]  = PADC("seven fully operational functions that you can add   ",60)
  85.       ac_Msg[3]  = PADC("to your Clipper v5.0x application with little effort.",60)
  86.       ac_Msg[4]  = PADC("                                                     ",60)
  87.       ac_Msg[5]  = PADC("Each function is described in detail in the Norton   ",60)
  88.       ac_Msg[6]  = PADC("Guides Database.  If you own Clipper v5.0x you should",60)
  89.       ac_Msg[7]  = PADC("already have the Norton Guides Runtime Engine named  ",60)
  90.       ac_Msg[8]  = PADC("NG.EXE.                                              ",60)
  91.       ac_Msg[9]  = PADC("                                                     ",60)
  92.       ac_Msg[10] = PADC("To access VERNSIX.NG, simply copy VERNSIX.NG to your ",60)
  93.       ac_Msg[11] = PADC("directory where NG.EXE resides.  Refer to your       ",60)
  94.       ac_Msg[12] = PADC("Clipper v5.0x for assistance on installing and using ",60)
  95.       ac_Msg[13] = PADC("Norton Guides.                                       ",60)
  96.       VS_Msg(ac_Msg,13,""," Press any key to continue ")
  97.       VS_Inkey(0)
  98.    VS_PutScr()
  99.  
  100.    VS_GrabScr()
  101.       ac_Msg[1]  = PADC("The rest of this demonstration is merely a series of",60)
  102.       ac_Msg[2]  = PADC("pull-down menus.  You can move from one pull-down   ",60)
  103.       ac_Msg[3]  = PADC("menu to the other, by the use of the left and right ",60)
  104.       ac_Msg[4]  = PADC("arrow keys.  To 'pull a menu down', press [Return]. ",60)
  105.       ac_Msg[5]  = PADC("Once you highlight the function you want to see     ",60)
  106.       ac_Msg[6]  = PADC("demonstrated, simply press [Return].                ",60)
  107.       ac_Msg[7]  = PADC("                                                    ",60)
  108.       ac_Msg[8]  = PADC("Note: Not all functions can be demonstrated from a  ",60)
  109.       ac_Msg[9]  = PADC("'visual perspective'.  In these cases, a dialog     ",60)
  110.       ac_Msg[10] = PADC("window will appear to tell you what is taking place.",60)
  111.       ac_Msg[11] = PADC("                                                    ",60)
  112.       ac_Msg[12] = PADC("Be sure to STUDY VERNDEMO.PRG to see what is taking ",60)
  113.       ac_Msg[13] = PADC("place behind the scenes.                            ",60)
  114.       VS_Msg(ac_Msg,13,"", " Press any key to continue ")
  115.       VS_Inkey(0)
  116.    VS_PutScr()
  117.  
  118.  
  119.    *══ Open the databases ════════════════════════════════════*
  120.  
  121.    BEGIN SEQUENCE
  122.  
  123.       IF .NOT. VS_OpenLst( { "VERNSIX", "SAMPLE" } )
  124.          BREAK
  125.       ENDIF
  126.  
  127.    END SEQUENCE
  128.  
  129.  
  130.    *══════════════════════════════════════════════════════════*
  131.    *══ Setup the menu arrays ═════════════════════════════════*
  132.    *══════════════════════════════════════════════════════════*
  133.    
  134.  
  135.    *══ Title Array ═══════════════════════════════════════════*
  136.    AADD( ac_Title, "Vern Six's Clipper ToolBox v8.04"         )
  137.    AADD( ac_Title, "CopyRight (c) 1991 by Vernon E. Six, Jr." )
  138.    AADD( ac_Title, "All Rights Reserved World Wide"           )
  139.    AADD( ac_Title, ""                                         )
  140.  
  141.  
  142.    *══ General ═══════════════════════════════════════════════*
  143.    a_Options := {}
  144.  
  145.    AADD( a_Options, { "VS_AddDays()  ", {||ShowFunc("VS_AddDays()"  ),Sorry()     } } )
  146.    AADD( a_Options, { "VS_AddHours() ", {||ShowFunc("VS_AddHours()" ),Sorry()     } } )
  147.    AADD( a_Options, { "VS_AddMins()  ", {||ShowFunc("VS_AddMins()"  ),Sorry()     } } )
  148.    AADD( a_Options, { "VS_AddSecs()  ", {||ShowFunc("VS_AddSecs()"  ),Sorry()     } } )
  149.    AADD( a_Options, { "VS_CfgFile()  ", {||ShowFunc("VS_CfgFile()"  ),D_CfgFile() } } )
  150.    AADD( a_Options, { "VS_DateTime() ", {||ShowFunc("VS_DateTime()" ),Sorry()     } } )
  151.    AADD( a_Options, { "VS_DecTo36()  ", {||ShowFunc("VS_DecTo36()"  ),D_DecTo36() } } )
  152.    AADD( a_Options, { "VS_Die()      ", {||ShowFunc("VS_Die()"      ),D_Die()     } } )
  153.    AADD( a_Options, { "VS_ElapDays() ", {||ShowFunc("VS_ElapDays()" ),Sorry()     } } )
  154.    AADD( a_Options, { "VS_ElapHours()", {||ShowFunc("VS_ElapHours()"),Sorry()     } } )
  155.    AADD( a_Options, { "VS_ElapMins() ", {||ShowFunc("VS_ElapMins()" ),Sorry()     } } )
  156.    AADD( a_Options, { "VS_ElapSecs() ", {||ShowFunc("VS_ElapSecs()" ),Sorry()     } } )
  157.    AADD( a_Options, { "VS_GetDate()  ", {||ShowFunc("VS_GetDate()"  ),Sorry()     } } )
  158.    AADD( a_Options, { "VS_GetTime()  ", {||ShowFunc("VS_GetTime()"  ),Sorry()     } } )
  159.    AADD( a_Options, { "VS_InitVern() ", {||ShowFunc("VS_InitVern()" ),Sorry()     } } )
  160.    AADD( a_Options, { "VS_NetEdit()  ", {||ShowFunc("VS_NetEdit()"  ),Sorry()     } } )
  161.    AADD( a_Options, { "VS_PopSets()  ", {||ShowFunc("VS_PopSets()"  ),Sorry()     } } )
  162.    AADD( a_Options, { "VS_PushSets() ", {||ShowFunc("VS_PushSets()" ),Sorry()     } } )
  163.    AADD( a_Options, { "VS_Random()   ", {||ShowFunc("VS_Random()"   ),D_Random()  } } )
  164.    AADD( a_Options, { "VS_ReadClr()  ", {||ShowFunc("VS_ReadClr()"  ),Sorry()     } } )
  165.    AADD( a_Options, { "VS_SaveClr()  ", {||ShowFunc("VS_SaveClr()"  ),Sorry()     } } )
  166.    AADD( a_Options, { "VS_SnapShot() ", {||ShowFunc("VS_SnapShot()" ),Sorry()     } } )
  167.    AADD( a_Options, { "VS_Unique()   ", {||ShowFunc("VS_Unique()"   ),D_Unique()  } } )
  168.    AADD( a_Options, { "VS_Version()  ", {||ShowFunc("VS_Version()"  ),D_Version() } } )
  169.    AADD( a_Options, { "VS_Write()    ", {||ShowFunc("VS_Write()"    ),Sorry()     } } )
  170.    AADD( a_Options, { "VS_WriteLn()  ", {||ShowFunc("VS_WriteLn()"  ),Sorry()     } } )
  171.  
  172.    AADD( a_Menu, { "General", a_Options } )
  173.  
  174.  
  175.    *══ Input/Output ══════════════════════════════════════════*
  176.    a_Options := {}
  177.  
  178.    AADD( a_Options, { "VS_Alert()    ", {||ShowFunc("VS_Alert()"    ),D_Alert()   } } )
  179.    AADD( a_Options, { "VS_ArraySkip()", {||ShowFunc("VS_ArraySkip()"),Sorry()     } } )
  180.    AADD( a_Options, { "VS_Ask()      ", {||ShowFunc("VS_Ask()"      ),D_Ask()     } } )
  181.    AADD( a_Options, { "VS_Ask2()     ", {||ShowFunc("VS_Ask2()"     ),D_Ask2()    } } )
  182.    AADD( a_Options, { "VS_BoxStr()   ", {||ShowFunc("VS_BoxStr()"   ),D_BoxStr()  } } )
  183.    AADD( a_Options, { "VS_Center()   ", {||ShowFunc("VS_Center()"   ),Sorry()     } } )
  184.    AADD( a_Options, { "VS_Color()    ", {||ShowFunc("VS_Color()"    ),D_Color()   } } )
  185.    AADD( a_Options, { "VS_Correct()  ", {||ShowFunc("VS_Correct()"  ),D_Correct() } } )
  186.    AADD( a_Options, { "VS_Cvt2Str()  ", {||ShowFunc("VS_Cvt2Str()"  ),Sorry()     } } )
  187.    AADD( a_Options, { "VS_DefPal()   ", {||ShowFunc("VS_DefPal()"   ),Sorry()     } } )
  188.    AADD( a_Options, { "VS_Dim()      ", {||ShowFunc("VS_Dim()"      ),D_Dim()     } } )
  189.    AADD( a_Options, { "VS_Dol2Str()  ", {||ShowFunc("VS_Dol2Str()"  ),D_Dol2Str() } } )
  190.    AADD( a_Options, { "VS_DropScr()  ", {||ShowFunc("VS_DropScr()"  ),Sorry()     } } )
  191.    AADD( a_Options, { "VS_Dte2Txt()  ", {||ShowFunc("VS_Dte2Txt()"  ),D_Dte2Txt() } } )
  192.    AADD( a_Options, { "VS_EatKeys()  ", {||ShowFunc("VS_EatKeys()"  ),Sorry()     } } )
  193.    AADD( a_Options, { "VS_Edit()     ", {||ShowFunc("VS_Edit()"     ),D_Edit()    } } )
  194.    AADD( a_Options, { "VS_EndText()  ", {||ShowFunc("VS_EndText()"  ),Sorry()     } } )
  195.    AADD( a_Options, { "VS_FileSel()  ", {||ShowFunc("VS_FileSel()"  ),D_FileSel() } } )
  196.    AADD( a_Options, { "VS_Filt()     ", {||ShowFunc("VS_Filt()"     ),D_Filt()    } } )
  197.    AADD( a_Options, { "VS_FootNote() ", {||ShowFunc("VS_FootNote()" ),Sorry()     } } )
  198.    AADD( a_Options, { "VS_GrabScr()  ", {||ShowFunc("VS_GrabScr()"  ),D_GrabPut() } } )
  199.    AADD( a_Options, { "VS_Inkey()    ", {||ShowFunc("VS_Inkey()"    ),Sorry()     } } )
  200.    AADD( a_Options, { "VS_Menu()     ", {||ShowFunc("VS_Menu()"     ),D_Menu()    } } )
  201.    AADD( a_Options, { "VS_Msg()      ", {||ShowFunc("VS_Msg()"      ),D_MSg()     } } )
  202.    AADD( a_Options, { "VS_NewScrn()  ", {||ShowFunc("VS_NewScrn()"  ),D_NewScrn() } } )
  203.    AADD( a_Options, { "VS_NoOther()  ", {||ShowFunc("VS_NoOther()"  ),D_NoOther() } } )
  204.    AADD( a_Options, { "VS_NotEmpty() ", {||ShowFunc("VS_NotEmpty()" ),D_NotEmpty()} } )
  205.    AADD( a_Options, { "VS_NotNeg()   ", {||ShowFunc("VS_NotNeg()"   ),D_NotNeg()  } } )
  206.    AADD( a_Options, { "VS_NotPos()   ", {||ShowFunc("VS_NotPos()"   ),D_NotPos()  } } )
  207.    AADD( a_Options, { "VS_NotZero()  ", {||ShowFunc("VS_NotZero()"  ),D_NotZero() } } )
  208.    AADD( a_Options, { "VS_Num2Txt()  ", {||ShowFunc("VS_Num2Txt()"  ),D_Num2Txt() } } )
  209.    AADD( a_Options, { "VS_Palette()  ", {||ShowFunc("VS_Palette()"  ),Sorry()     } } )
  210.    AADD( a_Options, { "VS_Parse()    ", {||ShowFunc("VS_Parse()"    ),D_Parse()   } } )
  211.    AADD( a_Options, { "VS_Pick()     ", {||ShowFunc("VS_Pick()"     ),D_Pick()    } } )
  212.    AADD( a_Options, { "VS_Proper()   ", {||ShowFunc("VS_Proper()"   ),D_Proper()  } } )
  213.    AADD( a_Options, { "VS_PutScr()   ", {||ShowFunc("VS_PutScr()"   ),D_GrabPut() } } )
  214.    AADD( a_Options, { "VS_ScrlBar()  ", {||ShowFunc("VS_ScrlBar()"  ),Sorry()     } } )
  215.    AADD( a_Options, { "VS_ShdwFill() ", {||ShowFunc("VS_ShdwFill()" ),D_ShdwFill()} } )
  216.    AADD( a_Options, { "VS_ShdwType() ", {||ShowFunc("VS_ShdwType()" ),D_ShdwType()} } )
  217.    AADD( a_Options, { "VS_Tell()     ", {||ShowFunc("VS_Tell()"     ),D_Tell()    } } )
  218.    AADD( a_Options, { "VS_Text()     ", {||ShowFunc("VS_Text()"     ),Sorry()     } } )
  219.    AADD( a_Options, { "VS_TextEnh()  ", {||ShowFunc("VS_TextEnh()"  ),D_TextEnh() } } )
  220.    AADD( a_Options, { "VS_TextStd()  ", {||ShowFunc("VS_TextStd()"  ),D_TextStd() } } )
  221.    AADD( a_Options, { "VS_TextUns()  ", {||ShowFunc("VS_TextUns()"  ),D_TextUns() } } )
  222.    AADD( a_Options, { "VS_Title()    ", {||ShowFunc("VS_Title()"    ),Sorry()     } } )
  223.    AADD( a_Options, { "VS_TxtColr()  ", {||ShowFunc("VS_TxtColr()"  ),Sorry()     } } )
  224.    AADD( a_Options, { "VS_VBoxStr()  ", {||ShowFunc("VS_VBoxStr()"  ),D_VBoxStr() } } )
  225.    AADD( a_Options, { "VS_ValKeys()  ", {||ShowFunc("VS_ValKeys()"  ),D_ValKeys() } } )
  226.    AADD( a_Options, { "VS_Wind()     ", {||ShowFunc("VS_Wind()"     ),D_Wind()    } } )
  227.    AADD( a_Options, { "VS_WindBox()  ", {||ShowFunc("VS_WindBox()"  ),D_WindBox() } } )
  228.    AADD( a_Options, { "VS_WindEnh()  ", {||ShowFunc("VS_WindEnh()"  ),D_WindEnh() } } )
  229.    AADD( a_Options, { "VS_WindShdw() ", {||ShowFunc("VS_WindShdw()" ),D_WindShdw()} } )
  230.    AADD( a_Options, { "VS_WindStd()  ", {||ShowFunc("VS_WindStd()"  ),D_WindStd() } } )
  231.    AADD( a_Options, { "VS_WindUns()  ", {||ShowFunc("VS_WindUns()"  ),D_WindUns() } } )
  232.    AADD( a_Options, { "VS_WndColr()  ", {||ShowFunc("VS_WndColr()"  ),Sorry()     } } )
  233.  
  234.    AADD( a_Menu, { "Input/Output", a_Options } )
  235.  
  236.  
  237.    *══ Help ══════════════════════════════════════════════════*
  238.    a_Options := {}
  239.  
  240.    AADD( a_Options, { "VS_CreateHelp()", {||ShowFunc("VS_CreateHelp()"),Sorry()     } } )
  241.    AADD( a_Options, { "VS_Help()      ", {||ShowFunc("VS_Help()"      ),D_Help()    } } )
  242.    AADD( a_Options, { "VS_HelpDbf()   ", {||ShowFunc("VS_HelpDbf()"   ),D_MakeHlp() } } )
  243.    AADD( a_Options, { "VS_HelpPrg()   ", {||ShowFunc("VS_HelpPrg()"   ),Sorry()     } } )
  244.    AADD( a_Options, { "VS_HelpVar()   ", {||ShowFunc("VS_HelpVar()"   ),Sorry()     } } )
  245.    AADD( a_Options, { "VS_InitHelp()  ", {||ShowFunc("VS_InitHelp()"  ),Sorry()     } } )
  246.    AADD( a_Options, { "VS_MakeHlp()   ", {||ShowFunc("VS_MakeHlp()"   ),D_MakeHlp() } } )
  247.    
  248.    AADD( a_Menu, { "Help", a_Options } )
  249.  
  250.  
  251.    *══ Database ══════════════════════════════════════════════*
  252.    a_Options := {}
  253.  
  254.    AADD( a_Options, { "VS_AddRec()   ", {||ShowFunc("VS_AddRec()"   ),Sorry()    } } )
  255.    AADD( a_Options, { "VS_Append()   ", {||ShowFunc("VS_Append()"   ),Sorry()    } } )
  256.    AADD( a_Options, { "VS_Browse()   ", {||ShowFunc("VS_Browse()"   ),D_Browse() } } )
  257.    AADD( a_Options, { "VS_CanMake()  ", {||ShowFunc("VS_CanMake()"  ),Sorry()    } } )
  258.    AADD( a_Options, { "VS_CloseLst() ", {||ShowFunc("VS_CloseLst()" ),Sorry()    } } )
  259.    AADD( a_Options, { "VS_DbfList()  ", {||ShowFunc("VS_DbfList()"  ),Sorry()    } } )
  260.    AADD( a_Options, { "VS_DelRec()   ", {||ShowFunc("VS_DelRec()"   ),Sorry()    } } )
  261.    AADD( a_Options, { "VS_DictPath() ", {||ShowFunc("VS_DictPath()" ),Sorry()    } } )
  262.    AADD( a_Options, { "VS_DictStru() ", {||ShowFunc("VS_DictStru()" ),Sorry()    } } )
  263.    AADD( a_Options, { "VS_DictVar()  ", {||ShowFunc("VS_DictVar()"  ),Sorry()    } } )
  264.    AADD( a_Options, { "VS_FLock()    ", {||ShowFunc("VS_FLock()"    ),Sorry()    } } )
  265.    AADD( a_Options, { "VS_FakeLck()  ", {||ShowFunc("VS_FakeLck()"  ),Sorry()    } } )
  266.    AADD( a_Options, { "VS_NtxAll()   ", {||ShowFunc("VS_NtxAll()"   ),Sorry()    } } )
  267.    AADD( a_Options, { "VS_NtxDict()  ", {||ShowFunc("VS_NtxDict()"  ),Sorry()    } } )
  268.    AADD( a_Options, { "VS_NtxList()  ", {||ShowFunc("VS_NtxList()"  ),Sorry()    } } )
  269.    AADD( a_Options, { "VS_OpenAll()  ", {||ShowFunc("VS_OpenAll()"  ),Sorry()    } } )
  270.    AADD( a_Options, { "VS_OpenDbf()  ", {||ShowFunc("VS_OpenDbf()"  ),Sorry()    } } )
  271.    AADD( a_Options, { "VS_OpenDict() ", {||ShowFunc("VS_OpenDict()" ),Sorry()    } } )
  272.    AADD( a_Options, { "VS_OpenLst()  ", {||ShowFunc("VS_OpenLst()"  ),Sorry()    } } )
  273.    AADD( a_Options, { "VS_PackAll()  ", {||ShowFunc("VS_PackAll()"  ),Sorry()    } } )
  274.    AADD( a_Options, { "VS_PopDbf()   ", {||ShowFunc("VS_PopDbf()"   ),Sorry()    } } )
  275.    AADD( a_Options, { "VS_PrintNtx() ", {||ShowFunc("VS_PrintNtx()" ),Sorry()    } } )
  276.    AADD( a_Options, { "VS_PushDbf()  ", {||ShowFunc("VS_PushDbf()"  ),Sorry()    } } )
  277.    AADD( a_Options, { "VS_RLock()    ", {||ShowFunc("VS_RLock()"    ),Sorry()    } } )
  278.    AADD( a_Options, { "VS_SemaMins() ", {||ShowFunc("VS_SemaMins() "),Sorry()    } } )
  279.    AADD( a_Options, { "VS_SemaPhore()", {||ShowFunc("VS_SemaPhore()"),Sorry()    } } )
  280.    AADD( a_Options, { "VS_SetOrder() ", {||ShowFunc("VS_SetOrder()" ),Sorry()    } } )
  281.    AADD( a_Options, { "VS_SetPath()  ", {||ShowFunc("VS_SetPath()"  ),Sorry()    } } )
  282.    AADD( a_Options, { "VS_ShowNtx()  ", {||ShowFunc("VS_ShowNtx()"  ),D_ShowNtx()} } )
  283.    AADD( a_Options, { "VS_Use()      ", {||ShowFunc("VS_Use()"      ),Sorry()    } } )
  284.  
  285.    AADD( a_Menu, { "DataBase", a_Options } )
  286.  
  287.  
  288.    *══ Printers ══════════════════════════════════════════════*
  289.    a_Options := {}
  290.  
  291.    AADD( a_Options, { "VS_Black()   ", {||ShowFunc("VS_Black()"   ),D_PrtFunc() } } )
  292.    AADD( a_Options, { "VS_Blue()    ", {||ShowFunc("VS_Blue()"    ),D_PrtFunc() } } )
  293.    AADD( a_Options, { "VS_Bold()    ", {||ShowFunc("VS_Bold()"    ),D_PrtFunc() } } )
  294.    AADD( a_Options, { "VS_BoldOff() ", {||ShowFunc("VS_BoldOff()" ),D_PrtFunc() } } )
  295.    AADD( a_Options, { "VS_BoldOn()  ", {||ShowFunc("VS_BoldOn()"  ),D_PrtFunc() } } )
  296.    AADD( a_Options, { "VS_Cond()    ", {||ShowFunc("VS_Cond()"    ),D_PrtFunc() } } )
  297.    AADD( a_Options, { "VS_CondOff() ", {||ShowFunc("VS_CondOff()" ),D_PrtFunc() } } )
  298.    AADD( a_Options, { "VS_CondOn()  ", {||ShowFunc("VS_CondOn()"  ),D_PrtFunc() } } )
  299.    AADD( a_Options, { "VS_CvtCode() ", {||ShowFunc("VS_CvtCode()" ),D_PrtFunc() } } )
  300.    AADD( a_Options, { "VS_Dbl()     ", {||ShowFunc("VS_Dbl()"     ),D_PrtFunc() } } )
  301.    AADD( a_Options, { "VS_DblOff()  ", {||ShowFunc("VS_DblOff()"  ),D_PrtFunc() } } )
  302.    AADD( a_Options, { "VS_DblOn()   ", {||ShowFunc("VS_DblOn()"   ),D_PrtFunc() } } )
  303.    AADD( a_Options, { "VS_Draft()   ", {||ShowFunc("VS_Draft()"   ),D_PrtFunc() } } )
  304.    AADD( a_Options, { "VS_FormFeed()", {||ShowFunc("VS_FormFeed()"),D_PrtFunc() } } )
  305.    AADD( a_Options, { "VS_Green()   ", {||ShowFunc("VS_Green()"   ),D_PrtFunc() } } )
  306.    AADD( a_Options, { "VS_InitPrtr()", {||ShowFunc("VS_InitPrtr()"),D_PrtFunc() } } )
  307.    AADD( a_Options, { "VS_Ital()    ", {||ShowFunc("VS_Ital()"    ),D_PrtFunc() } } )
  308.    AADD( a_Options, { "VS_ItalOff() ", {||ShowFunc("VS_ItalOff()" ),D_PrtFunc() } } )
  309.    AADD( a_Options, { "VS_ItalOn()  ", {||ShowFunc("VS_ItalOn()"  ),D_PrtFunc() } } )
  310.    AADD( a_Options, { "VS_LineFeed()", {||ShowFunc("VS_LineFeed()"),D_PrtFunc() } } )
  311.    AADD( a_Options, { "VS_LinesPg() ", {||ShowFunc("VS_LinesPg()" ),D_PrtFunc() } } )
  312.    AADD( a_Options, { "VS_Nlq()     ", {||ShowFunc("VS_Nlq()"     ),D_PrtFunc() } } )
  313.    AADD( a_Options, { "VS_Orange()  ", {||ShowFunc("VS_Orange()"  ),D_PrtFunc() } } )
  314.    AADD( a_Options, { "VS_PrintTst()", {||ShowFunc("VS_PrintTst()"),D_PrintTst()} } )
  315.    AADD( a_Options, { "VS_PrtMsg()  ", {||ShowFunc("VS_PrtMsg()"  ),D_PrtFunc() } } )
  316.    AADD( a_Options, { "VS_Purple()  ", {||ShowFunc("VS_Purple()"  ),D_PrtFunc() } } )
  317.    AADD( a_Options, { "VS_Red()     ", {||ShowFunc("VS_Red()"     ),D_PrtFunc() } } )
  318.    AADD( a_Options, { "VS_Reset()   ", {||ShowFunc("VS_Reset()"   ),D_PrtFunc() } } )
  319.    AADD( a_Options, { "VS_Und()     ", {||ShowFunc("VS_Und()"     ),D_PrtFunc() } } )
  320.    AADD( a_Options, { "VS_UndOff()  ", {||ShowFunc("VS_UndOff()"  ),D_PrtFunc() } } )
  321.    AADD( a_Options, { "VS_UndOn()   ", {||ShowFunc("VS_UndOn()"   ),D_PrtFunc() } } )
  322.    AADD( a_Options, { "VS_Yellow()  ", {||ShowFunc("VS_Yellow()"  ),D_PrtFunc() } } )
  323.    
  324.    AADD( a_Menu, { "Printers", a_Options } )
  325.  
  326.  
  327.    *══ Security ══════════════════════════════════════════════*
  328.  
  329.    a_Options := {}
  330.  
  331.    AADD( a_Options, { "VS_ChkAuth() ", {||ShowFunc("VS_ChkAuth()" ),Sorry() } } )
  332.    AADD( a_Options, { "VS_Decrypt() ", {||ShowFunc("VS_Decrypt()" ),Sorry() } } )
  333.    AADD( a_Options, { "VS_Encrypt() ", {||ShowFunc("VS_Encrypt()" ),Sorry() } } )
  334.    AADD( a_Options, { "VS_Initials()", {||ShowFunc("VS_Initials()"),Sorry() } } )
  335.    AADD( a_Options, { "VS_Login()   ", {||ShowFunc("VS_Login()"   ),Sorry() } } )
  336.    AADD( a_Options, { "VS_MntPwd()  ", {||ShowFunc("VS_MntPwd()"  ),Sorry() } } )
  337.    AADD( a_Options, { "VS_UserName()", {||ShowFunc("VS_UserName()"),Sorry() } } )
  338.  
  339.    AADD( a_Menu, { "Security", a_Options } )
  340.  
  341.  
  342.    *══ Other ═════════════════════════════════════════════════*
  343.    
  344.    AADD( a_Menu, { "Other", { ;
  345.                             { "Ordering Information", {||OrdrInfo()   } }, ;
  346.                             { "Technical Support   ", {||TechSupp()   } }, ;
  347.                             { "Special Thanks      ", {||ThankYou()   } }, ;
  348.                             { "Quit - Leave Demo   ", {||Adios()      } }  ;
  349.                             } ;
  350.                  } )
  351.  
  352.  
  353.    *══ Here we go... ═════════════════════════════════════════*
  354.  
  355.    DO WHILE .T.  // Just for Kent!  <Grin>
  356.  
  357.       VS_Menu( a_Menu, ac_Title )
  358.  
  359.    ENDDO
  360.  
  361.    *══════════════════════════════════════════════════════════*
  362.    
  363. RETURN(NIL)
  364. *** EOF: ********************************************************************
  365.  
  366.  
  367.  
  368. FUNCTION Sorry()
  369. *****
  370. * Tell the user that there is no way to demonstrate a function
  371. *****
  372.  
  373.    VS_Tell(2,0,"",PADC("Sorry... There Is No Way To Demonstrate This",50), ;
  374.                   PADC("Function From A Visual Perspective.",50),"")
  375.  
  376. RETURN(NIL)
  377. *** EOF: Sorry() ************************************************************
  378.  
  379.  
  380. FUNCTION OrdrInfo()
  381. *****
  382. * Ordering Information
  383. *****
  384. LOCAL ac_Msg[11]
  385.  
  386.    VS_GRABSCR()
  387.       VS_PALETTE(4)
  388.       ac_Msg[01] = " For complete pricing and product information please contact: "
  389.       ac_Msg[02] = "                                                              "
  390.       ac_Msg[03] = "                     FrontLine Software                       "
  391.       ac_Msg[04] = "                2908 Forest Hollow Lane, #2329                "
  392.       ac_Msg[05] = "                    Arlington, TX  76006                      "
  393.       ac_Msg[06] = "                  Ph: (214) 283-3282 - Voice                  "
  394.       ac_Msg[07] = "                  Ph: (817) 695-0058 - Modem                  "
  395.       ac_Msg[08] = "                                                              "
  396.       ac_Msg[09] = "                     FidoNet 1:124/4003.0                     "
  397.       ac_Msg[10] = "                    CompuServe: 72240,3122                    "
  398.       ac_Msg[11] = "                    ClipMail: CLIPBRD_HOME                    "
  399.       VS_MSG(ac_Msg,11,""," Press any key to continue ",5)
  400.       INKEY(0)
  401.    VS_PUTSCR()
  402.  
  403. RETURN(NIL)
  404. *** EOF: OrdrInfo() *********************************************************
  405.  
  406.  
  407. FUNCTION TechSupp()
  408. *****
  409. * Technical Support
  410. *****
  411. LOCAL ac_Msg[15]
  412.  
  413.    VS_GRABSCR()
  414.       VS_PALETTE(4)
  415.       ac_Msg[01] = " Technical Support for  The Vern Six Clipper ToolBox is  provided "
  416.       ac_Msg[02] = " free of charge via a number of avenues...  The author (Vernon E. "
  417.       ac_Msg[03] = " Six,  Jr.)  can  be   reached  on  the  ClipBoard  Home  BBS  at "
  418.       ac_Msg[04] = " 817/695-0058 (24hrs, 38400  baud USR HST Dual  Standard)  or  at "
  419.       ac_Msg[05] = " FidoNet   Address   1:124/4003.0,  CompuServe:  72240,3122   and "
  420.       ac_Msg[06] = " ClipMail: CLIPBRD_HOME.                                          "
  421.       ac_Msg[07] = " "
  422.       ac_Msg[08] = " Techinal Support (via one of the above 'Electronic Mediums')  is "
  423.       ac_Msg[09] = " provided free of  charge  to  registered  users  on  a  'As Time "
  424.       ac_Msg[10] = " Permits'  basis.  Registered  users are also entitled  to ninety "
  425.       ac_Msg[11] = " (90)  days  of  live   (voice)  technical  support   by  calling "
  426.       ac_Msg[12] = " 214/283-3282 8a-6p Monday through Friday. "
  427.       ac_Msg[13] = " "
  428.       ac_Msg[14] = " Additional live techincal support can be  purchased  at  $100.00 "
  429.       ac_Msg[15] = " per hour with a half-hour minimum."
  430.       VS_MSG(ac_Msg,15,""," Press any key to continue ")
  431.       INKEY(0)
  432.    VS_PUTSCR()
  433.  
  434. RETURN(NIL)
  435. *** EOF: TechSupp() *********************************************************
  436.  
  437.  
  438.  
  439. FUNCTION ThankYou()
  440. *****
  441. * Special Thanks
  442. *****
  443. LOCAL ac_Msg[14]
  444.  
  445.    VS_GRABSCR()
  446.       VS_PALETTE(4)
  447.       ac_Msg[01] = " A  special  note  of  thanks is due to three  of  the  most "
  448.       ac_Msg[02] = " important people in my life... my  best  friend/wife  Norma "
  449.       ac_Msg[03] = " and my two good friends Frank Grubbs and Jerry  Eckler  for "
  450.       ac_Msg[04] = " their never ending support.                                 "
  451.       ac_Msg[05] = " "
  452.       ac_Msg[06] = " If it weren't for Frank and Jerry's continual  testing  and "
  453.       ac_Msg[07] = " support, this library would quite certainly never have been "
  454.       ac_Msg[08] = " published.                                                  "
  455.       ac_Msg[09] = " "
  456.       ac_Msg[10] = " If it weren't for my wife's  never ending support and  love "
  457.       ac_Msg[11] = " (and  willingness to  be without  her husband for  extended "
  458.       ac_Msg[12] = " periods of  time) this and all my other  ShareWare products "
  459.       ac_Msg[13] = " would have died a sudden death long before the first line   "
  460.       ac_Msg[14] = " of code was ever written!                                   "
  461.       VS_MSG(ac_Msg,14,""," Press any key to continue ")
  462.       INKEY(0)
  463.    VS_PUTSCR()
  464.  
  465. RETURN(NIL)
  466. *** EOF: ThankYou() *********************************************************
  467.  
  468.  
  469.  
  470. FUNCTION Adios()
  471. *****
  472. * We're all done!
  473. *****
  474. LOCAL n_Top
  475.  
  476.    dbCloseAll()
  477.  
  478.    DispBegin()
  479.  
  480.       VS_TxtColr()
  481.       VS_NewScrn()
  482.  
  483.       n_Top  := 3
  484.  
  485.       VS_Wind(n_Top,8,n_Top+11,72,""," Press Any Key To Exit ")
  486.  
  487.       @ n_Top+1,10 SAY PADC("Vern Six's Clipper ToolBox v8.04       Fri  10-11-1991",60)
  488.       @ n_Top+2,10 SAY PADC("",60)
  489.       @ n_Top+3,10 SAY PADC("Copyright (c) 1991  by Vernon E. Six, Jr.",60)
  490.       @ n_Top+4,10 SAY PADC("All Rights Reserved World Wide",60)
  491.       @ n_Top+5,10 SAY PADC("",60)
  492.       @ n_Top+6,10 SAY PADC("Vernon E. Six, Jr.",60)
  493.       @ n_Top+7,10 SAY PADC("2908 Forest Hollow Lane #2329",60)
  494.       @ n_Top+8,10 SAY PADC("Arlington, Texas  76006",60)
  495.       @ n_Top+9,10 SAY PADC("Ph: (214) 283-3282 - VOICE",60)
  496.       @ n_Top+10,10 SAY PADC("Ph: (817) 695-0058 - BBS",60)
  497.  
  498.       n_Top  := 18
  499.  
  500.       VS_Wind(n_Top,8,n_Top+2,72,"","")
  501.  
  502.       @ n_Top+1,10 SAY PADC("Thank You For Choosing Vern Six's Products!",60)
  503.  
  504.    DispEnd()
  505.  
  506.    VS_Inkey(15)
  507.  
  508.    VS_TxtColr()
  509.    Clear Screen
  510.    QOut( "Vern Six's Clipper ToolBox v8.04"                         )
  511.    QOut( "CopyRight (c) 1991 by Vernon E. Six, Jr."                 )
  512.    QOut( "All Rights Reserved World Wide"                           )
  513.    QOut( ""                                                         )
  514.    QOut( "For More Information Or For Assistance, Please Call"      )
  515.    QOut( "The ClipBoard Home BBS (a/k/a *THE* Clipper Hang-Out)"    )
  516.    QOut( "at 817/695-0058, 1200-38400baud, USR Dual Standard, 24hrs")
  517.    QOut( ""                                                         )
  518.    QOut( "Access to The ClipBoard Home BBS (tm) is *FREE* and you"  )
  519.    QOut( "can download up to one mega-byte on your first call!!"    )
  520.    QOut( "230 mega-bytes of nothing but Clipper Goodies online!"    )
  521.    QOut( ""                                                         )
  522.    QUIT
  523.  
  524. *** EOF: Adios() ************************************************************
  525.  
  526.  
  527.  
  528.  
  529. FUNCTION BrowseIt( pac_Text )
  530. *****
  531. * Common function to browse text from D_* functions
  532. *****
  533. LOCAL n_Element  := 1
  534. LOCAL o_Browse
  535. LOCAL o_Column
  536. LOCAL n_Key      := 0
  537. LOCAL n_Cntr     := 0
  538. LOCAL n_BarLine  := 1
  539.  
  540.    *****
  541.    * Draw the window and place the scroll bar on there
  542.    *****
  543.    VS_GrabScr()
  544.  
  545.       VS_Palette(5)  // Pick Lists, etc.
  546.  
  547.       VS_WndColr()
  548.  
  549.       o_Browse   := TBrowseNew( 3,3,21,74 )
  550.       o_Column   := TBColumnNew(, {||pac_Text[n_Element]})
  551.  
  552.       o_Browse:goTopBlock    := {|| n_Element := 1}
  553.       o_Browse:goBottomBlock := {|| n_Element := LEN(pac_Text) }
  554.       o_Browse:SkipBlock     := {|n|VS_ArraySkip(LEN(pac_Text),@n_Element,n)}
  555.       o_Browse:AutoLite      := .F.
  556.  
  557.       o_Browse:AddColumn(o_Column)
  558.  
  559.       SETCURSOR(SC_NONE)
  560.  
  561.  
  562.       DispBegin()
  563.  
  564.          VS_Wind(2,2,22,76,""," Press <Esc> To Exit ")
  565.  
  566.          @ 3,75 SAY ""
  567.  
  568.          FOR n_Cntr = 4 TO 20
  569.             @ n_Cntr,75 SAY "░"
  570.          NEXT n_Cntr
  571.  
  572.          @ 21,75 SAY ""
  573.  
  574.       DispEnd()
  575.  
  576.  
  577.       DO WHILE .T.
  578.  
  579.          DispBegin()
  580.  
  581.             DO WHILE .NOT. o_Browse:Stabilize()
  582.             ENDDO
  583.  
  584.             @ 3+n_BarLine,75 SAY "░"
  585.             n_BarLine = VS_ScrlBar(n_Element,17,LEN(pac_Text))
  586.             @ 3+n_BarLine,75 SAY "█"
  587.  
  588.          DispEnd()
  589.  
  590.          n_Key = INKEY(0)
  591.  
  592.          DO CASE
  593.  
  594.             CASE n_Key = K_UP
  595.                o_Browse:up()
  596.  
  597.             CASE n_Key = K_DOWN
  598.                o_Browse:down()
  599.  
  600.             CASE n_Key = K_PGUP
  601.                o_Browse:PageUp()
  602.  
  603.             CASE n_Key = K_PGDN
  604.                o_Browse:PageDown()
  605.  
  606.             CASE n_Key = K_ESC
  607.                EXIT
  608.  
  609.          ENDCASE
  610.  
  611.       ENDDO
  612.  
  613.    VS_PutScr()
  614.  
  615. RETURN(NIL)
  616. *** EOF: BrowseIt() *********************************************************
  617.  
  618.  
  619. FUNCTION ShowFunc( pc_FuncName )
  620. *****
  621. * Returns an array of text about the specified function name
  622. *****
  623. LOCAL ac_Text := {}
  624.  
  625.  
  626.    IF .NOT. VERNSIX->( dbSeek( pc_FuncName ) )
  627.       VS_Tell(3,10,"",PADC("Function Not Found!",40),"")
  628.       RETURN(NIL)
  629.    ENDIF
  630.  
  631.  
  632.    VS_Text(2,"",PADC("Working...",30),"")
  633.  
  634.  
  635.    *═══════════════════════════════════════════════════════════════*
  636.  
  637.    AADD( ac_Text, VERNSIX->FUNC_NAME + SPACE(6) + VERNSIX->SHORT  )
  638.    AADD( ac_Text, ""                                              )
  639.  
  640.  
  641.    *═══════════════════════════════════════════════════════════════*
  642.  
  643.    c_Text = StrTran( StrTran( VERNSIX->DESC, "^U", "" ), "^B", "" )
  644.  
  645.    AADD( ac_Text, "Description:"                                  )
  646.    AADD( ac_Text, ""                                              )
  647.    
  648.    FOR n_Cntr = 1 TO MLCOUNT(c_Text,60)
  649.       AADD( ac_Text, SPACE(3) + MemoLine( c_Text, 60, n_Cntr ) )
  650.    NEXT n_Cntr
  651.  
  652.    AADD( ac_Text, ""                                              )
  653.  
  654.  
  655.  
  656.    *═══════════════════════════════════════════════════════════════*
  657.  
  658.    c_Text = StrTran( StrTran( VERNSIX->SYNTAX, "^U", "" ), "^B", "" )
  659.  
  660.    AADD( ac_Text, "Syntax:"                                       )
  661.    AADD( ac_Text, ""                                              )
  662.    
  663.    FOR n_Cntr = 1 TO MLCOUNT(c_Text,60)
  664.       AADD( ac_Text, SPACE(3) + MemoLine( c_Text, 60, n_Cntr ) )
  665.    NEXT n_Cntr
  666.  
  667.    AADD( ac_Text, ""                                              )
  668.  
  669.  
  670.  
  671.    *═══════════════════════════════════════════════════════════════*
  672.  
  673.    c_Text = StrTran( StrTran( VERNSIX->PASS, "^U", "" ), "^B", "" )
  674.  
  675.    AADD( ac_Text, "Pass:"                                         )
  676.    AADD( ac_Text, ""                                              )
  677.    
  678.    FOR n_Cntr = 1 TO MLCOUNT(c_Text,60)
  679.       AADD( ac_Text, SPACE(3) + MemoLine( c_Text, 60, n_Cntr ) )
  680.    NEXT n_Cntr
  681.  
  682.    AADD( ac_Text, ""                                              )
  683.  
  684.  
  685.  
  686.    *═══════════════════════════════════════════════════════════════*
  687.  
  688.    c_Text = StrTran( StrTran( VERNSIX->RETURN, "^U", "" ), "^B", "" )
  689.  
  690.    AADD( ac_Text, "Return:"                                       )
  691.    AADD( ac_Text, ""                                              )
  692.    
  693.    FOR n_Cntr = 1 TO MLCOUNT(c_Text,60)
  694.       AADD( ac_Text, SPACE(3) + MemoLine( c_Text, 60, n_Cntr ) )
  695.    NEXT n_Cntr
  696.  
  697.    AADD( ac_Text, ""                                              )
  698.  
  699.  
  700.  
  701.    *═══════════════════════════════════════════════════════════════*
  702.  
  703.    c_Text = StrTran( StrTran( VERNSIX->NOTES, "^U", "" ), "^B", "" )
  704.  
  705.    AADD( ac_Text, "Notes:"                                        )
  706.    AADD( ac_Text, ""                                              )
  707.    
  708.    FOR n_Cntr = 1 TO MLCOUNT(c_Text,60)
  709.       AADD( ac_Text, SPACE(3) + MemoLine( c_Text, 60, n_Cntr ) )
  710.    NEXT n_Cntr
  711.  
  712.    AADD( ac_Text, ""                                              )
  713.  
  714.  
  715.  
  716.    *═══════════════════════════════════════════════════════════════*
  717.  
  718.    c_Text = StrTran( StrTran( VERNSIX->EXAMPLE, "^U", "" ), "^B", "" )
  719.  
  720.    AADD( ac_Text, "Example:"                                      )
  721.    AADD( ac_Text, ""                                              )
  722.    
  723.    FOR n_Cntr = 1 TO MLCOUNT(c_Text,60)
  724.       AADD( ac_Text, SPACE(3) + MemoLine( c_Text, 60, n_Cntr ) )
  725.    NEXT n_Cntr
  726.  
  727.    AADD( ac_Text, ""                                              )
  728.  
  729.  
  730.  
  731.    *═══════════════════════════════════════════════════════════════*
  732.  
  733.    c_Text = StrTran( StrTran( VERNSIX->USAGE, "^U", "" ), "^B", "" )
  734.  
  735.    AADD( ac_Text, "Usage:"                                        )
  736.    AADD( ac_Text, ""                                              )
  737.    
  738.    FOR n_Cntr = 1 TO MLCOUNT(c_Text,60)
  739.       AADD( ac_Text, SPACE(3) + MemoLine( c_Text, 60, n_Cntr ) )
  740.    NEXT n_Cntr
  741.  
  742.    AADD( ac_Text, ""                                              )
  743.  
  744.  
  745.  
  746.    *═══════════════════════════════════════════════════════════════*
  747.  
  748.    c_Text = StrTran( StrTran( VERNSIX->SEEALSO, "^U", "" ), "^B", "" )
  749.  
  750.    AADD( ac_Text, "See Also:"                                     )
  751.    AADD( ac_Text, ""                                              )
  752.    
  753.    FOR n_Cntr = 1 TO MLCOUNT(c_Text,60)
  754.       AADD( ac_Text, SPACE(3) + MemoLine( c_Text, 60, n_Cntr ) )
  755.    NEXT n_Cntr
  756.  
  757.    AADD( ac_Text, ""                                              )
  758.  
  759.  
  760.  
  761.    *═══════════════════════════════════════════════════════════════*
  762.  
  763.    VS_EndText()
  764.  
  765.    BrowseIt( ac_Text )
  766.  
  767. RETURN(NIL)
  768. *** EOF: ShowFunc() *********************************************************
  769.  
  770.  
  771.   
  772.        *══════════════════════════════════════════════════════════*
  773.        * Here is really where the demonstration of the functions  *
  774.        * take place                                               *
  775.        *══════════════════════════════════════════════════════════*
  776.  
  777.  
  778. *══════════════════════════════════════════════════════════*
  779.  
  780. FUNCTION D_CfgFile()
  781.  
  782.    VS_Tell(2,0,"",PADC("VS_CfgFile() currently returned a value of... ",60),;
  783.                   PADC(VS_CfgFile(),60),"")
  784.  
  785. RETURN(NIL)
  786.  
  787. *══════════════════════════════════════════════════════════*
  788.  
  789. FUNCTION D_DecTo36()
  790. LOCAL n_Temp  := 0
  791.  
  792.    VS_GrabScr()
  793.  
  794.       VS_Palette(7)
  795.  
  796.       SETCURSOR(SC_NORMAL)
  797.  
  798.       VS_Wind(10,18,14,62,"","")
  799.  
  800.       @ 12,20 SAY "Please Enter A Numeric Value: " GET n_Temp
  801.       READ
  802.  
  803.    VS_PutScr()
  804.  
  805.  
  806.    VS_Tell(2,0,"",PADC("Your number converted to...",60), ;
  807.                   PADC(VS_DecTo36(n_Temp),60), "")
  808.  
  809. RETURN(NIL)
  810.  
  811. *══════════════════════════════════════════════════════════*
  812.  
  813. FUNCTION D_Die()
  814.  
  815.    VS_Die( PADC("This Is An Example Of VS_Die()",50),"", ;
  816.            PADC("It Has Been Fun!!  See Ya!",50) )
  817.  
  818. RETURN(NIL)
  819.  
  820. *══════════════════════════════════════════════════════════*
  821.  
  822. FUNCTION D_FileSel()
  823. LOCAL c_FileName := ""
  824.  
  825.    CLEAR TYPEAHEAD
  826.  
  827.    VS_GrabScr()
  828.  
  829.       VS_Palette(5)
  830.  
  831.       c_FileName = VS_FileSel("*.*",5,5,15,"","")
  832.  
  833.    VS_PutScr()
  834.  
  835.    VS_Tell( 2,0,PADC("You Selected...",40), PADC(ALLTRIM(c_FileName),40) )
  836.  
  837. RETURN(NIL)
  838.  
  839. *══════════════════════════════════════════════════════════*
  840.  
  841. FUNCTION D_Random()
  842. LOCAL n_Temp  := 0
  843.  
  844.    VS_GrabScr()
  845.  
  846.       VS_Palette(7)
  847.  
  848.       SETCURSOR(SC_NORMAL)
  849.  
  850.       VS_Wind(10,18,14,62,"","")
  851.  
  852.       @ 12,20 SAY "Please Enter A Numeric Value: " GET n_Temp
  853.       READ
  854.  
  855.    VS_PutScr()
  856.  
  857.    VS_Tell(2,0, PADC("VS_Random() Currently Returned...",50), ;
  858.                 PADC(ALLTRIM(STR(VS_Random(n_Temp,6))),50) )
  859.  
  860. RETURN(NIL)
  861.  
  862. *══════════════════════════════════════════════════════════*
  863.  
  864. FUNCTION D_Unique()
  865.  
  866.    VS_Tell(2,0, PADC("VS_Unique() Currently Returned...",50), ;
  867.                 PADC(VS_Unique(),50) )
  868.  
  869. RETURN(NIL)
  870.  
  871. *══════════════════════════════════════════════════════════*
  872.  
  873. FUNCTION D_Version()
  874.  
  875.    VS_Tell(2,0, PADC("VS_Version() Currently Returned...",50), ;
  876.                 PADC(VS_Version(),50) )
  877.  
  878. RETURN(NIL)
  879.  
  880. *══════════════════════════════════════════════════════════*
  881.  
  882. FUNCTION D_Alert()
  883. LOCAL ac_Text    := { PADC("This is a demonstration of VS_Alert()",50), ;
  884.                       PADC("What Do You Think So Far?",50) }
  885.  
  886. LOCAL ac_Buttons := { "Don't Know", "Don't Care", "Cancel" }
  887.  
  888. LOCAL n_Button   := 0
  889.  
  890.  
  891.    n_Button = VS_Alert( ac_Text, ac_Buttons, 2 )
  892.  
  893.    VS_Tell(2,0,"",PADC("You Pressed Button #"+ALLTRIM(STR(n_Button)),50),"")
  894.  
  895. RETURN(NIL)
  896.  
  897. *══════════════════════════════════════════════════════════*
  898.  
  899. FUNCTION D_Ask()
  900.  
  901. LOCAL c_Choice
  902.  
  903.    c_Choice = VS_Ask("Demo of VS_Ask:  Do you like what you see so far","YyNn")
  904.  
  905.    VS_Tell(2,0,"",PADC("You Selected "+IF(c_Choice$"Yy","Yes","No"),40),"")
  906.  
  907. RETURN(NIL)
  908.  
  909. *══════════════════════════════════════════════════════════*
  910.  
  911. FUNCTION D_Ask2()
  912.  
  913. LOCAL c_Choice
  914.  
  915.    c_Choice = VS_Ask2( { "This is a demo of VS_Ask2()", ;
  916.                          "Do you like what you see so far" }, 2,"","","YyNn" )
  917.  
  918.    VS_Tell(2,0,"",PADC("You Selected "+IF(c_Choice$"Yy","Yes","No"),40),"")
  919.  
  920. RETURN(NIL)
  921.  
  922. *══════════════════════════════════════════════════════════*
  923.  
  924. FUNCTION D_BoxStr()
  925.  
  926.    VS_Tell(2,0,PADC("Currently VS_BoxStr() returned...",50),;
  927.                PADC(VS_BoxStr(),50) )
  928.  
  929. RETURN(NIL)
  930.  
  931. *══════════════════════════════════════════════════════════*
  932.  
  933. FUNCTION D_Color()
  934. LOCAL n_Palette   := 0
  935. LOCAL ac_Palettes := { " Normal Text & Windows ",;
  936.                        " Help Messages         ",;
  937.                        " Error Messages        ",;
  938.                        " Network I/O Messages  ",;
  939.                        " Pick Lists            ",;
  940.                        " Secondary Pick Lists  ",;
  941.                        " Input Panels          ",;
  942.                        " Alert Boxes           ",;
  943.                        " Anything you want     "   }
  944.  
  945.    VS_GrabScr()
  946.  
  947.       VS_Wind(6,26,16,56," Which palette? ","")
  948.  
  949.       n_Palette = ACHOICE(7,28,15,54,ac_Palettes)
  950.  
  951.       IF n_Palette >= 1 .AND. n_Palette <= 9
  952.  
  953.          VS_Palette(n_Palette)
  954.          VS_Color()
  955.  
  956.       ENDIF
  957.  
  958.    VS_PutScr()
  959.  
  960.    VS_TxtColr()
  961.  
  962. RETURN(NIL)
  963.  
  964. *══════════════════════════════════════════════════════════*
  965.  
  966. FUNCTION D_Correct()
  967. LOCAL n_Choice := 0
  968.  
  969.    n_Choice = VS_Correct()
  970.  
  971.    VS_Tell(2,0,"",PADC("You Selected...",40),PADC( {"Yes","No","Cancel"}[n_Choice],40))
  972.  
  973. RETURN(NIL)
  974.  
  975. *══════════════════════════════════════════════════════════*
  976.  
  977. FUNCTION D_Dim()
  978.  
  979.    VS_Tell(2,0,"",PADC("VS_Dim() is used by every window function",50), ;
  980.                   PADC("to create the 'shadow' effect.",50) )
  981.  
  982. RETURN(NIL)
  983.  
  984. *══════════════════════════════════════════════════════════*
  985.  
  986. FUNCTION D_Dol2Str()
  987.  
  988. LOCAL n_Temp  := 0
  989.  
  990.    VS_GrabScr()
  991.  
  992.       VS_Palette(7)
  993.  
  994.       SETCURSOR(SC_NORMAL)
  995.  
  996.       VS_Wind(10,18,14,62,"","")
  997.  
  998.       @ 12,20 SAY "Please Enter A Numeric Value: " GET n_Temp
  999.       READ
  1000.  
  1001.    VS_PutScr()
  1002.  
  1003.    VS_Tell(2,0, PADC("Your Number Converted To...",50), ;
  1004.                 PADC(VS_Dol2Str(n_Temp),50) )
  1005.  
  1006. RETURN(NIL)
  1007.  
  1008. *══════════════════════════════════════════════════════════*
  1009.  
  1010. FUNCTION D_Dte2Txt()
  1011.  
  1012. LOCAL d_Temp := DATE()
  1013.  
  1014.    VS_GrabScr()
  1015.  
  1016.       VS_Palette(7)
  1017.  
  1018.       SETCURSOR(SC_NORMAL)
  1019.  
  1020.       VS_Wind(10,20,14,59,"","")
  1021.  
  1022.       @ 12,22 SAY "Please Enter A Date Value: " GET d_Temp
  1023.       READ
  1024.  
  1025.    VS_PutScr()
  1026.  
  1027.    VS_Tell( 2,0,"",PADC("Your Date Converted To...",50) , ;
  1028.             PADC("Style #1... "+VS_Dte2Txt(d_Temp,1),50), ;
  1029.             PADC("Style #2... "+VS_Dte2Txt(d_Temp,2),50)    )
  1030.  
  1031. RETURN(NIL)
  1032.  
  1033. *══════════════════════════════════════════════════════════*
  1034.  
  1035. FUNCTION D_Edit()
  1036. *****
  1037. * Demonstrate VEDIT() use
  1038. *****
  1039. LOCAL c_Filter := ""
  1040. LOCAL n_Key    := 0
  1041. LOCAL c_Temp   := ""
  1042. LOCAL c_Last
  1043. LOCAL c_Frst
  1044. LOCAL c_Mid
  1045. LOCAL c_Title
  1046. LOCAL c_SubTitle
  1047. LOCAL c_Publisher
  1048. LOCAL c_CityState
  1049. LOCAL c_Year
  1050. LOCAL c_Class
  1051. LOCAL c_Location
  1052. LOCAL c_Comment1
  1053. LOCAL c_Comment2
  1054. LOCAL c_Comment3
  1055. LOCAL l_Update    := .F.
  1056. LOCAL l_Destroyed := .T.
  1057.  
  1058.    VS_GrabScr()
  1059.  
  1060.       VS_Palette(1)
  1061.       VS_NewScrn()
  1062.  
  1063.       SAMPLE->( dbClearFilter() )
  1064.       SAMPLE->( dbGoTop()       )
  1065.  
  1066.       //
  1067.       // Main VS_Edit() Loop
  1068.       //                    
  1069.       DO WHILE .T.
  1070.  
  1071.          *══════════════════════════════════════════════════════════*
  1072.          //
  1073.          // Display the current record
  1074.          //
  1075.          IF l_Destroyed
  1076.  
  1077.             VS_TxtColr()
  1078.             CLEAR SCREEN
  1079.  
  1080.             //
  1081.             // Display the text shell
  1082.             //
  1083.             @ 01,00 SAY [╒══════════════════════════════════════════════════════════════════════════════╕]
  1084.             @ 02,00 SAY [│                           Sample Library Database                            │]
  1085.             @ 03,00 SAY [╞══════════════════════════════════════════════════════════════════════════════╡]
  1086.             @ 04,00 SAY [│ About the author...                                                          │]
  1087.             @ 05,00 SAY [│  Last Name:                        First Name:                               │]
  1088.             @ 06,00 SAY [│                                                                              │]
  1089.             @ 07,00 SAY [│ About the book...                                                            │]
  1090.             @ 08,00 SAY [│      Title:                                                                  │]
  1091.             @ 09,00 SAY [│  Sub-Title:                                                                  │]
  1092.             @ 10,00 SAY [│                                                                              │]
  1093.             @ 11,00 SAY [│  Publisher:                                 City, St:                        │]
  1094.             @ 12,00 SAY [│                                                                              │]
  1095.             @ 13,00 SAY [│       Year:            Class:                       Location:                │]
  1096.             @ 14,00 SAY [│                                                                              │]
  1097.             @ 15,00 SAY [│  Comments...                                                                 │]
  1098.             @ 16,00 SAY [│                                                                              │]
  1099.             @ 17,00 SAY [│                                                                              │]
  1100.             @ 18,00 SAY [│                                                                              │]
  1101.             @ 19,00 SAY [│                                                                              │]
  1102.             @ 20,00 SAY [╞══════════════════════════════════════════════════════════════════════════════╡]
  1103.             @ 21,00 SAY [│                                                                              │]
  1104.             @ 22,00 SAY [│                                                                              │]
  1105.             @ 23,00 SAY [│                                                                              │]
  1106.             @ 24,00 SAY [╘══════════════════════════════════════════════════════════════════════════════╛]
  1107.  
  1108.             l_Destroyed = .F.
  1109.  
  1110.          ENDIF
  1111.  
  1112.          //
  1113.          // Buffer the screen I/O for smooth display
  1114.          //
  1115.          DispBegin()
  1116.  
  1117.             @ 02,60 SAY " *** View Mode *** "
  1118.  
  1119.             IF RECNO() <= LASTREC()
  1120.  
  1121.                c_temp="Record # "+LTRIM( STR( SAMPLE->(RECNO()) ) )
  1122.                IF SAMPLE->( Deleted() )
  1123.                   c_temp=c_temp+[*]
  1124.                 ELSE
  1125.                   c_temp=c_temp+[ ]
  1126.                ENDIF
  1127.                c_temp=c_temp+" of "+LTRIM( STR( SAMPLE->(RECCOUNT()) ) )+"      "
  1128.                @ 02,02 SAY c_temp
  1129.  
  1130.                // Make SAY fields same color as GETs
  1131.                SetColor( VS_TextUns() )
  1132.  
  1133.                @ 05,14 SAY SAMPLE->AUTHORLAST
  1134.                @ 05,49 SAY SAMPLE->AUTHORFRST
  1135.                @ 05,65 SAY SAMPLE->AUTHORMID
  1136.                @ 08,14 SAY SAMPLE->TITLE
  1137.                @ 09,14 SAY SAMPLE->SUBTITLE
  1138.                @ 11,14 SAY SAMPLE->PUBLISHER
  1139.                @ 11,56 SAY SAMPLE->CITYSTATE
  1140.                @ 13,14 SAY SAMPLE->YEAR
  1141.                @ 13,32 SAY SAMPLE->CLASS
  1142.                @ 13,64 SAY SAMPLE->LOCATION
  1143.                @ 16,04 SAY SAMPLE->COMMENT1
  1144.                @ 17,04 SAY SAMPLE->COMMENT2
  1145.                @ 18,04 SAY SAMPLE->COMMENT3
  1146.  
  1147.                VS_TxtColr()
  1148.  
  1149.              ELSE
  1150.  
  1151.                @ 02,02 SAY "No records in database"
  1152.                SAMPLE->( dbGoBottom() )
  1153.                SAMPLE->( dbSkip()     )
  1154.  
  1155.             ENDIF
  1156.  
  1157.             @ 21,00 SAY [│ Esc - Exit     F10  - Colors     Home  - First   Rtrn - Edit                 │]
  1158.             @ 22,00 SAY [│ F1  - Help     PgDn - Next       End   - Last    Del  - Delete               │]
  1159.             @ 23,00 SAY [│ F9  - Filter   Pgup - Previous   Alpha - Seek    Ins  - Append               │]
  1160.  
  1161.             *══════════════════════════════════════════════════════════*
  1162.  
  1163.             SetCursor( SC_NONE )
  1164.  
  1165.          DispEnd()
  1166.  
  1167.  
  1168.  
  1169.          //
  1170.          // This is where all the magic takes place
  1171.          //
  1172.          n_Key = SAMPLE->( VS_Edit(.T.) )
  1173.  
  1174.  
  1175.  
  1176.          DO CASE
  1177.  
  1178.             //
  1179.             // Edit Current Record or Add a New Record
  1180.             //
  1181.             CASE n_Key = K_ENTER .OR. n_Key = K_INS
  1182.             
  1183.                IF n_Key = K_ENTER
  1184.                   @ 02,60 SAY " *** Edit Mode *** "
  1185.                 ELSE
  1186.                   @ 02,60 SAY "*** Insert Mode ***"
  1187.                ENDIF
  1188.  
  1189.                @ 21,00 SAY "│ F1   - Help         End   - End of line  ^T - Del word    Del  - Del Char    │"
  1190.                @ 22,00 SAY "│ ESC  - Abort Edit   ^Home - First field  ^Y - Del to EOL  Ins  - Insert      │"
  1191.                @ 23,00 SAY "│ Home - Beg of line  ^End  - Last field   ^U - Ooops       PgDn - Save        │"
  1192.  
  1193.                c_Last      = IF( n_Key=K_ENTER, SAMPLE->AUTHORLAST,SPACE(20) )
  1194.                c_Frst      = IF( n_Key=K_ENTER, SAMPLE->AUTHORFRST,SPACE(15) )
  1195.                c_Mid       = IF( n_Key=K_ENTER, SAMPLE->AUTHORMID ,SPACE(13) )
  1196.                c_Title     = IF( n_Key=K_ENTER, SAMPLE->TITLE     ,SPACE(60) )
  1197.                c_SubTitle  = IF( n_Key=K_ENTER, SAMPLE->SUBTITLE  ,SPACE(60) )
  1198.                c_Publisher = IF( n_Key=K_ENTER, SAMPLE->PUBLISHER ,SPACE(30) )
  1199.                c_CityState = IF( n_Key=K_ENTER, SAMPLE->CITYSTATE ,SPACE(20) )
  1200.                c_Year      = IF( n_Key=K_ENTER, SAMPLE->YEAR      ,SPACE(09) )
  1201.                c_Class     = IF( n_Key=K_ENTER, SAMPLE->CLASS     ,SPACE(20) )
  1202.                c_Location  = IF( n_Key=K_ENTER, SAMPLE->LOCATION  ,SPACE(05) )
  1203.                c_Comment1  = IF( n_Key=K_ENTER, SAMPLE->COMMENT1  ,SPACE(72) )
  1204.                c_Comment2  = IF( n_Key=K_ENTER, SAMPLE->COMMENT2  ,SPACE(72) )
  1205.                c_Comment3  = IF( n_Key=K_ENTER, SAMPLE->COMMENT3  ,SPACE(72) )
  1206.  
  1207.                @ 05,14 GET c_Last
  1208.                @ 05,49 GET c_Frst
  1209.                @ 05,65 GET c_Mid
  1210.                @ 08,14 GET c_Title
  1211.                @ 09,14 GET c_SubTitle
  1212.                @ 11,14 GET c_Publisher
  1213.                @ 11,56 GET c_CityState
  1214.                @ 13,14 GET c_Year
  1215.                @ 13,32 GET c_Class
  1216.                @ 13,64 GET c_Location
  1217.                @ 16,04 GET c_Comment1
  1218.                @ 17,04 GET c_Comment2
  1219.                @ 18,04 GET c_Comment3
  1220.  
  1221.                SetCursor( SC_NORMAL )
  1222.                READ
  1223.                SetCursor( SC_NONE   )
  1224.  
  1225.                //
  1226.                // Only update the record if the user didn't abort!
  1227.                //
  1228.                IF LASTKEY() <> K_ESC
  1229.  
  1230.                   IF n_Key = K_ENTER
  1231.                      l_Update = SAMPLE->(VS_RLock())
  1232.                    ELSE
  1233.                      l_Update = SAMPLE->(VS_Append())
  1234.                   ENDIF
  1235.  
  1236.                   IF l_Update
  1237.  
  1238.                      REPLACE SAMPLE->AUTHORLAST  WITH c_Last
  1239.                      REPLACE SAMPLE->AUTHORFRST  WITH c_Frst
  1240.                      REPLACE SAMPLE->AUTHORMID   WITH c_Mid
  1241.                      REPLACE SAMPLE->TITLE       WITH c_Title
  1242.                      REPLACE SAMPLE->SUBTITLE    WITH c_SubTitle
  1243.                      REPLACE SAMPLE->PUBLISHER   WITH c_Publisher
  1244.                      REPLACE SAMPLE->CITYSTATE   WITH c_CityState
  1245.                      REPLACE SAMPLE->YEAR        WITH c_Year
  1246.                      REPLACE SAMPLE->CLASS       WITH c_Class
  1247.                      REPLACE SAMPLE->LOCATION    WITH c_Location
  1248.                      REPLACE SAMPLE->COMMENT1    WITH c_Comment1
  1249.                      REPLACE SAMPLE->COMMENT2    WITH c_Comment2
  1250.                      REPLACE SAMPLE->COMMENT3    WITH c_Comment3
  1251.  
  1252.                      SAMPLE->( dbUnlock() )
  1253.  
  1254.                   ENDIF
  1255.  
  1256.                ENDIF
  1257.  
  1258.             //
  1259.             // Delete current record
  1260.             //
  1261.             CASE n_Key = K_DEL
  1262.  
  1263.                IF SAMPLE->( VS_RLock() )
  1264.  
  1265.                   IF SAMPLE->( Deleted()  )
  1266.                      SAMPLE->( dbRecall() )
  1267.                    ELSE
  1268.                      SAMPLE->( dbDelete() )
  1269.                   ENDIF
  1270.  
  1271.                   SAMPLE->( dbUnlock() )
  1272.  
  1273.                ENDIF
  1274.  
  1275.  
  1276.             //
  1277.             // All Done!
  1278.             //
  1279.             CASE n_Key = K_ESC
  1280.  
  1281.                EXIT
  1282.  
  1283.  
  1284.             //
  1285.             // Change Colors
  1286.             //
  1287.             CASE n_Key = K_F10
  1288.  
  1289.                D_Color()
  1290.                l_Destroyed = .T.  // Force Screen to Re-Draw
  1291.  
  1292.  
  1293.             //
  1294.             // Let the user define a filter
  1295.             //
  1296.             CASE n_Key = K_F9
  1297.  
  1298.                c_Filter = SAMPLE->(VS_Filt())
  1299.  
  1300.                IF .NOT. EMPTY(c_Filter)
  1301.                   SAMPLE->( dbSetFilter( &("{||"+c_Filter+"}"), c_Filter ) )
  1302.                 ELSE
  1303.                   SAMPLE->( dbClearFilter() )
  1304.                ENDIF
  1305.  
  1306.                SAMPLE->( dbGoTop() )
  1307.  
  1308.  
  1309.             //
  1310.             // Something else was pressed... see if it is a hotkey
  1311.             //
  1312.             OTHERWISE
  1313.  
  1314.                IF .NOT. (b_KeyBlock := SetKey(n_Key)) == NIL
  1315.                   EVAL( b_KeyBlock,ProcName(1),ProcLine(1),"D_Edit()" )
  1316.                ENDIF
  1317.  
  1318.          ENDCASE
  1319.  
  1320.       ENDDO
  1321.  
  1322.       //
  1323.       // Make sure the Filter is gone
  1324.       //
  1325.       SAMPLE->( dbClearFilter() )
  1326.       SAMPLE->( dbGoTop()       )
  1327.  
  1328.    VS_PutScr()
  1329.  
  1330. RETURN(NIL)
  1331.  
  1332. *══════════════════════════════════════════════════════════*
  1333.  
  1334. FUNCTION D_Filt()
  1335.  
  1336. LOCAL c_Filter
  1337. LOCAL n_Cntr
  1338.  
  1339.    c_Filter = SAMPLE->(VS_Filt())
  1340.  
  1341.    VS_GrabScr()
  1342.  
  1343.       VS_Palette(2)
  1344.  
  1345.       VS_Wind(7,13,9+MIN(MLCOUNT(c_Filter,50),10),67,""," Press Any Key To Continue ")
  1346.  
  1347.       @ 8,15 SAY PADC("Your Filter Came Back As...",50)
  1348.  
  1349.       FOR n_Cntr = 1 TO MIN(MLCOUNT(c_Filter,50),10)
  1350.  
  1351.          @ 8+n_Cntr,15 SAY PADC( MemoLine(c_Filter,50,n_Cntr), 50 )
  1352.  
  1353.       NEXT n_Cntr
  1354.  
  1355.       VS_Inkey(0)
  1356.  
  1357.    VS_PutScr()
  1358.  
  1359. RETURN(NIL)
  1360.  
  1361. *══════════════════════════════════════════════════════════*
  1362.  
  1363. FUNCTION D_GrabPut()
  1364.  
  1365.    VS_GrabScr()
  1366.  
  1367.       VS_Palette(2)
  1368.  
  1369.       VS_Wind(9,8,14,72,""," Press Any Key To Continue ")
  1370.  
  1371.       @ 11,10 SAY PADC("The screen has been messed up by the placement",60)
  1372.       @ 12,10 SAY PADC("of this window.  Press any key and it will be restored.",60)
  1373.  
  1374.       VS_Inkey(0)
  1375.  
  1376.    VS_PutScr()
  1377.  
  1378. RETURN(NIL)
  1379.  
  1380. *══════════════════════════════════════════════════════════*
  1381.  
  1382. FUNCTION D_Menu()
  1383.  
  1384.    VS_Tell( 2,0, "", PADC("VS_Menu() is the heart and soul of VERNDEMO.PRG",60), ;
  1385.             PADC("Please study VERNDEMO.PRG to see how VS_Menu() works.",60) )
  1386.  
  1387. RETURN(NIL)
  1388.  
  1389. *══════════════════════════════════════════════════════════*
  1390.  
  1391. FUNCTION D_Msg()
  1392.  
  1393. LOCAL ac_Msg  := { PADC("This is a an example of VS_Msg",60) }
  1394.  
  1395.    VS_GrabScr()
  1396.  
  1397.       VS_Palette(2)
  1398.  
  1399.       VS_Msg(ac_Msg,1,""," Press Any Key To Continue ")
  1400.  
  1401.       VS_Inkey(0)
  1402.  
  1403.    VS_PutScr()
  1404.  
  1405. RETURN(NIL)
  1406.  
  1407. *══════════════════════════════════════════════════════════*
  1408.  
  1409. FUNCTION D_NewScrn()
  1410.  
  1411.    VS_Tell(2,0,"",PADC("VS_NewScrn() is a replacement for CLEAR SCREEN",60),;
  1412.      PADC("VS_NewScrn() produces the nice background that you now see.",60) )
  1413.  
  1414. RETURN(NIL)
  1415.  
  1416. *══════════════════════════════════════════════════════════*
  1417.  
  1418. FUNCTION D_NoOther()
  1419.  
  1420. LOCAL c_Temp  := "GRUBBS" + SPACE(14)
  1421.  
  1422.    VS_GrabScr()
  1423.  
  1424.       VS_Palette(7)
  1425.  
  1426.       VS_Wind(08,13,16,67,""," Press <Esc> To Exit ")
  1427.  
  1428.       @ 10,15 SAY PADC("This is a demonstration of VS_NoOther()",50)
  1429.       @ 11,15 SAY PADC("Type the word 'GRUBBS' at the prompt below",50)
  1430.       @ 12,15 SAY PADC("to see VS_NoOther() come to life",50)
  1431.  
  1432.       @ 14,20 SAY "Author's Last Name: " GET c_Temp              ;
  1433.               PICTURE "@!" VALID SAMPLE->(VS_NoOther(@c_Temp))
  1434.  
  1435.       SetCursor(SC_NORMAL)
  1436.       READ
  1437.  
  1438.    VS_PutScr()
  1439.  
  1440. RETURN(NIL)
  1441.  
  1442. *══════════════════════════════════════════════════════════*
  1443.  
  1444. FUNCTION D_NotEmpty()
  1445.  
  1446. LOCAL c_Temp  := SPACE(20)
  1447.  
  1448.    VS_GrabScr()
  1449.  
  1450.       VS_Palette(7)
  1451.  
  1452.       VS_Wind(08,13,16,67,""," Press <Esc> To Exit ")
  1453.  
  1454.       @ 10,15 SAY PADC("This is a demonstration of VS_NotEmpty()",50)
  1455.       @ 11,15 SAY PADC("Press [Return] at the prompt below",50)
  1456.       @ 12,15 SAY PADC("to see VS_NotEmpty() come to life",50)
  1457.  
  1458.       @ 14,17 SAY "Enter a non-empty string: "  GET c_Temp              ;
  1459.               PICTURE "@!" VALID VS_NotEmpty(@c_Temp)
  1460.  
  1461.       SetCursor(SC_NORMAL)
  1462.       READ
  1463.  
  1464.    VS_PutScr()
  1465.  
  1466. RETURN(NIL)
  1467.  
  1468. *══════════════════════════════════════════════════════════*
  1469.  
  1470. FUNCTION D_NotNeg()
  1471.  
  1472. LOCAL n_Temp  := -1
  1473.  
  1474.    VS_GrabScr()
  1475.  
  1476.       VS_Palette(7)
  1477.  
  1478.       VS_Wind(08,13,16,67,""," Press <Esc> To Exit ")
  1479.  
  1480.       @ 10,15 SAY PADC("This is a demonstration of VS_NotNeg()",50)
  1481.       @ 11,15 SAY PADC("Press [Return] at the prompt below",50)
  1482.       @ 12,15 SAY PADC("to see VS_NotNeg() come to life",50)
  1483.  
  1484.       @ 14,17 SAY "Enter a positive number: "  GET n_Temp   ;
  1485.               PICTURE "@!" VALID VS_NotNeg(@n_Temp)
  1486.  
  1487.       SetCursor(SC_NORMAL)
  1488.       READ
  1489.  
  1490.    VS_PutScr()
  1491.  
  1492. RETURN(NIL)
  1493.  
  1494. *══════════════════════════════════════════════════════════*
  1495.  
  1496. FUNCTION D_NotPos()
  1497.  
  1498. LOCAL n_Temp  := 1
  1499.  
  1500.    VS_GrabScr()
  1501.  
  1502.       VS_Palette(7)
  1503.  
  1504.       VS_Wind(08,13,16,67,""," Press <Esc> To Exit ")
  1505.  
  1506.       @ 10,15 SAY PADC("This is a demonstration of VS_NotPos()",50)
  1507.       @ 11,15 SAY PADC("Press [Return] at the prompt below",50)
  1508.       @ 12,15 SAY PADC("to see VS_NotPos() come to life",50)
  1509.  
  1510.       @ 14,17 SAY "Enter a negative number: "  GET n_Temp   ;
  1511.               PICTURE "@!" VALID VS_NotPos(@n_Temp)
  1512.  
  1513.       SetCursor(SC_NORMAL)
  1514.       READ
  1515.  
  1516.    VS_PutScr()
  1517.  
  1518. RETURN(NIL)
  1519.  
  1520. *══════════════════════════════════════════════════════════*
  1521.                  
  1522. FUNCTION D_NotZero()
  1523.  
  1524. LOCAL n_Temp  := 0
  1525.  
  1526.    VS_GrabScr()
  1527.  
  1528.       VS_Palette(7)
  1529.  
  1530.       VS_Wind(08,13,16,67,""," Press <Esc> To Exit ")
  1531.  
  1532.       @ 10,15 SAY PADC("This is a demonstration of VS_NotZero()",50)
  1533.       @ 11,15 SAY PADC("Press [Return] at the prompt below",50)
  1534.       @ 12,15 SAY PADC("to see VS_NotZero() come to life",50)
  1535.  
  1536.       @ 14,17 SAY "Enter a negative number: "  GET n_Temp   ;
  1537.               PICTURE "@!" VALID VS_NotZero(@n_Temp)
  1538.  
  1539.       SetCursor(SC_NORMAL)
  1540.       READ
  1541.  
  1542.    VS_PutScr()
  1543.  
  1544. RETURN(NIL)
  1545.  
  1546. *══════════════════════════════════════════════════════════*
  1547.  
  1548. FUNCTION D_Num2Txt()
  1549.  
  1550. LOCAL n_Temp  := 0
  1551.  
  1552.    VS_GrabScr()
  1553.  
  1554.       VS_Palette(7)
  1555.  
  1556.       SETCURSOR(SC_NORMAL)
  1557.  
  1558.       VS_Wind(10,18,14,62,"","")
  1559.  
  1560.       @ 12,20 SAY "Please Enter A Numeric Value: " GET n_Temp
  1561.       READ
  1562.  
  1563.    VS_PutScr()
  1564.  
  1565.    VS_Tell(2,0, PADC("Your Number Converted To...",50), ;
  1566.                 PADC(VS_Num2Txt(n_Temp),50) )
  1567.  
  1568. RETURN(NIL)
  1569.  
  1570. *══════════════════════════════════════════════════════════*
  1571.  
  1572. FUNCTION D_Parse()
  1573.  
  1574. LOCAL c_Temp  := "TWO WORDS OR MORE   "
  1575.  
  1576.    VS_GrabScr()
  1577.  
  1578.       VS_Palette(7)
  1579.  
  1580.       VS_Wind(08,13,16,67,""," Press <Esc> To Exit ")
  1581.  
  1582.       @ 10,15 SAY PADC("Please enter two words at the prompt below",50)
  1583.  
  1584.       @ 14,17 SAY "Enter a two or more words: "  GET c_Temp
  1585.  
  1586.       SetCursor(SC_NORMAL)
  1587.       READ
  1588.  
  1589.    VS_PutScr()
  1590.  
  1591.    VS_Tell(3,0,"",PADC("The first word in your input was...",50),;
  1592.          PADC(VS_Parse(c_Temp),50),"" )
  1593.  
  1594. RETURN(NIL)
  1595.  
  1596. *══════════════════════════════════════════════════════════*
  1597.  
  1598. FUNCTION D_Pick()
  1599.  
  1600.    VS_Tell( 2,0, "", PADC("VS_Pick() is a compatibility function, therefore",50), ;
  1601.       PADC("You are urged NOT to use it as it may not be a",50), ;
  1602.       PADC("part of future release of VernSix5.Lib",50),"")
  1603.  
  1604. RETURN(NIL)
  1605.  
  1606. *══════════════════════════════════════════════════════════*
  1607.  
  1608. FUNCTION D_Proper()
  1609.  
  1610. LOCAL c_Temp  := SPACE(20)
  1611.  
  1612.    VS_GrabScr()
  1613.  
  1614.       VS_Palette(7)
  1615.  
  1616.       VS_Wind(08,13,16,67,""," Press <Esc> To Exit ")
  1617.  
  1618.       @ 10,15 SAY PADC("Please enter a lowercase word at the prompt below",50)
  1619.  
  1620.       @ 14,23 SAY "Enter a word: "  GET c_Temp
  1621.  
  1622.       SetCursor(SC_NORMAL)
  1623.       READ
  1624.  
  1625.    VS_PutScr()
  1626.  
  1627.    VS_Tell(3,0,"",PADC("The first word in your input was...",50),;
  1628.          PADC(VS_Parse(c_Temp),50),"" )
  1629.  
  1630. RETURN(NIL)
  1631.  
  1632. *══════════════════════════════════════════════════════════*
  1633.  
  1634. FUNCTION D_ShdwFill()
  1635.  
  1636.    VS_Tell(2,0,"",PADC("Currently VS_ShdwFill() returned...",50), ;
  1637.      PADC(CHR(16)+VS_ShdwFill()+CHR(17),50) )
  1638.  
  1639. RETURN(NIL)
  1640.  
  1641. *══════════════════════════════════════════════════════════*
  1642.  
  1643. FUNCTION D_ShdwType()
  1644.  
  1645.    VS_Tell(2,0,"",PADC("Currently VS_ShdwFill() returned...",50), ;
  1646.      PADC(CHR(16)+ALLTRIM(STR(VS_ShdwType()))+CHR(17),50) )
  1647.  
  1648. RETURN(NIL)
  1649.  
  1650. *══════════════════════════════════════════════════════════*
  1651.  
  1652. FUNCTION D_Tell()
  1653.  
  1654.    VS_Tell(2,0,"",PADC("This is a demonstration of VS_Tell()",50),"")
  1655.  
  1656. RETURN(NIL)
  1657.  
  1658. *══════════════════════════════════════════════════════════*
  1659.  
  1660. FUNCTION D_TextEnh()
  1661.  
  1662.    VS_Tell(2,0,"",PADC("VS_TextEnh() currently returned...",50), ;
  1663.        PADC( VS_TextEnh(), 50), "" )
  1664.  
  1665. RETURN(NIL)
  1666.  
  1667. *══════════════════════════════════════════════════════════*
  1668.  
  1669. FUNCTION D_TextStd()
  1670.  
  1671.    VS_Tell(2,0,"",PADC("VS_TextStd() currently returned...",50), ;
  1672.        PADC( VS_TextStd(), 50), "" )
  1673.  
  1674. RETURN(NIL)
  1675.  
  1676. *══════════════════════════════════════════════════════════*
  1677.  
  1678. FUNCTION D_TextUns()
  1679.  
  1680.    VS_Tell(2,0,"",PADC("VS_TextUns() currently returned...",50), ;
  1681.        PADC( VS_TextUns(), 50), "" )
  1682.  
  1683. RETURN(NIL)
  1684.  
  1685. *══════════════════════════════════════════════════════════*
  1686.  
  1687. FUNCTION D_VBoxStr()
  1688.  
  1689.    VS_Tell(2,0,PADC("Currently VS_VBoxStr() returned...",50),;
  1690.                PADC(VS_VBoxStr(),50) )
  1691.  
  1692. RETURN(NIL)
  1693.  
  1694. *══════════════════════════════════════════════════════════*
  1695.  
  1696. FUNCTION D_ValKeys()
  1697.  
  1698. LOCAL c_Temp  := "B"
  1699.  
  1700.    VS_GrabScr()
  1701.  
  1702.       VS_Palette(7)
  1703.  
  1704.       VS_Wind(08,13,16,67,""," Press <Esc> To Exit ")
  1705.  
  1706.       @ 10,15 SAY PADC("This is a demonstration of VS_ValKeys()",50)
  1707.       @ 11,15 SAY PADC("Press [Return] at the prompt below",50)
  1708.       @ 12,15 SAY PADC("to see VS_ValKeys() come to life",50)
  1709.  
  1710.       @ 14,27 SAY "Enter a letter from A-E: "  GET c_Temp              ;
  1711.               PICTURE "!" VALID VS_ValKeys(@c_Temp,"ABCDE")
  1712.  
  1713.       SetCursor(SC_NORMAL)
  1714.       READ
  1715.  
  1716.    VS_PutScr()
  1717.  
  1718. RETURN(NIL)
  1719.  
  1720. *══════════════════════════════════════════════════════════*
  1721.  
  1722. FUNCTION D_Wind()
  1723.  
  1724.    VS_Tell(2,0,"",PADC("Every window you have seen in this demo",50), ;
  1725.       PADC("(including this one) have been created",50), ;
  1726.       PADC("using VS_Wind().",50) )
  1727.  
  1728. RETURN(NIL)
  1729.  
  1730. *══════════════════════════════════════════════════════════*
  1731.  
  1732. FUNCTION D_WindBox()
  1733.  
  1734.    VS_Tell(2,0,"",PADC("VS_WindBox() currently returned...",50), ;
  1735.        PADC( VS_WindBox(), 50), "" )
  1736.  
  1737. RETURN(NIL)
  1738.  
  1739. *══════════════════════════════════════════════════════════*
  1740.  
  1741. FUNCTION D_WindEnh()
  1742.  
  1743.    VS_Tell(2,0,"",PADC("VS_WindEnh() currently returned...",50), ;
  1744.        PADC( VS_WindEnh(), 50), "" )
  1745.  
  1746. RETURN(NIL)
  1747.  
  1748. *══════════════════════════════════════════════════════════*
  1749.  
  1750. FUNCTION D_WindShdw()
  1751.  
  1752.    VS_Tell(2,0,"",PADC("VS_WindShdw() currently returned...",50), ;
  1753.        PADC( VS_WindShdw(), 50), "" )
  1754.  
  1755. RETURN(NIL)
  1756.  
  1757. *══════════════════════════════════════════════════════════*
  1758.  
  1759. FUNCTION D_WindStd()
  1760.  
  1761.    VS_Tell(2,0,"",PADC("VS_WindStd() currently returned...",50), ;
  1762.        PADC( VS_WindStd(), 50), "" )
  1763.  
  1764. RETURN(NIL)
  1765.  
  1766. *══════════════════════════════════════════════════════════*
  1767.  
  1768. FUNCTION D_WindUns()
  1769.  
  1770.    VS_Tell(2,0,"",PADC("VS_WindUns() currently returned...",50), ;
  1771.        PADC( VS_WindUns(), 50), "" )
  1772.  
  1773. RETURN(NIL)
  1774.  
  1775. *══════════════════════════════════════════════════════════*
  1776.  
  1777. FUNCTION D_Help()
  1778.  
  1779.    VS_Tell(2,0,"",PADC("To see a demonstration of VS_Help(), press the",50),;
  1780.      PADC("<F1> key at any time during this demo",50),"")
  1781.  
  1782. RETURN(NIL)
  1783.  
  1784. *══════════════════════════════════════════════════════════*
  1785.  
  1786. FUNCTION D_MakeHlp()
  1787.  
  1788.    VS_Tell(2,0,"",PADC("To see a demonstration of VS_MakeHlp(), press",50),;
  1789.      PADC("<ALT-H> at any time during this demo",50),"")
  1790.  
  1791. RETURN(NIL)
  1792.  
  1793. *══════════════════════════════════════════════════════════*
  1794.  
  1795. FUNCTION D_Browse()
  1796.  
  1797. LOCAL n_Key      := 0
  1798. LOCAL n_Top      := 5
  1799. LOCAL n_Left     := 5
  1800. LOCAL n_Bottom     := 20
  1801. LOCAL n_Right     := 75
  1802. LOCAL c_Title     := " Demo of VS_Browse() "
  1803. LOCAL c_Footnote := " Press [Esc] or [Return] to exit "
  1804. LOCAL n_Palette  := 5
  1805. LOCAL a_ColObjs  := {}
  1806.  
  1807.    AADD( a_ColObjs, TBColumnNew( "Function        - Short Description", ;
  1808.      {||FUNC_NAME+[ - ]+SHORT} ) )
  1809.  
  1810.    n_Key = VERNSIX->( VS_Browse( n_Top, n_Left, n_Bottom, n_Right, c_Title, ;
  1811.               c_FootNote, n_Palette, a_ColObjs ) )
  1812.  
  1813.    VS_Tell(2,0,"",PADC("VS_Browse() currently returned...",50), ;
  1814.       PADC(ALLTRIM(STR(n_Key)),50) )
  1815.  
  1816. RETURN(NIL)
  1817.  
  1818. *══════════════════════════════════════════════════════════*
  1819.  
  1820. FUNCTION D_ShowNtx()
  1821.  
  1822.    VS_Tell(2,0,"",PADC("Press any key to see a demonstration",50), ;
  1823.       PADC("of VS_ShowNtx().",50),"")
  1824.  
  1825.    SAMPLE->( VS_ShowNtx( "SAMPLE", "AUTHORLAST+AUTHORFRST", "C" ) )
  1826.  
  1827. RETURN(NIL)
  1828.  
  1829. *══════════════════════════════════════════════════════════*
  1830.  
  1831. FUNCTION D_PrtFunc()
  1832.  
  1833.    VS_Tell(2,0,"",PADC("To see a demonstration of all the printer",50), ;
  1834.       PADC("functions, select VS_PrintTst()",50), "" )
  1835.  
  1836. RETURN(NIL)
  1837.  
  1838. *══════════════════════════════════════════════════════════*
  1839.  
  1840. FUNCTION D_PrintTst()
  1841.  
  1842.    IF .NOT. IsPrinter()
  1843.  
  1844.       VS_Tell(3,0,"",PADC("Printer is not ready!",40), "")
  1845.       RETURN(NIL)
  1846.  
  1847.    ENDIF
  1848.  
  1849.    VS_GrabScr()
  1850.  
  1851.       VS_Palette(2)
  1852.  
  1853.       VS_PrintTst()
  1854.  
  1855.    VS_PutScr()
  1856.  
  1857. RETURN(NIL)
  1858.  
  1859. *══════════════════════════════════════════════════════════*
  1860.  
  1861.  
  1862.